<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <h4>如果你给一个还没有声明的变量赋值，它会自动变成一个全局变量:</h4>
    <p id="output"></p>
    <script>
        //1.
        //第一个是函数内部的var全局 只能在函数内部使用
        ////这里的代码不能使用cityName
        function myFunc() {
            var cityName = "new York";
            //这里的代码可以使用cityName
        }
        //这里的代码不能使用cityName
        // document.getElementById("ttt").innerHTML = cityName;
        //2.
        //初始化全局变量
        var name = "123";
        //这里的代码能使用name
        function myFunc2() {
            //这里的代码也能使用name
        }
        //这里的代码也能使用name

        //结合起来
        // 初始化全局变量
        var cityName1 = "New Delhi";

        function myFunc() {
            // 初始化局部函数作用域的变量
            var cityName1 = "Jaipur";
            document.writeln(cityName1);
        }

        // 输出全局变量和局部变量
        document.writeln(cityName1);
        myFunc();
        document.writeln(cityName1);

        //3.自动全局变量
        myFunc();

        //此处的代码可以将carName用作全局变量
        document.getElementById("output").innerHTML = cityName;

        function myFunc() {
            cityName = "New Delhi";
        }
        //块作用域
        //1)
        {
            var num = 50;
        }
        // num 能在这里使用

        //2)
        {
            let num = 50;
        }
        // num不能在这里使用

        //3)
        {
            const num = 50;
        }
        // num不能在这里使用
    </script>
    <p>JavaScript变量的生命周期从声明开始。<br> 函数完成后，将删除局部变量。<br> 当您关闭浏览器窗口时，全局变量将被删除，但对于加载到同一窗口中的新页面仍然可用。

    </p>
</body>

</html>